/*
 * Option.cpp
 *
 *  Created on: 24 déc. 2010
 *      Author: remz
 */

#include <string>
#include <iostream>
#include <fstream>
#include <stdlib.h>

#include "Option.h"

#define OPTION rpg::Option

using namespace std;
using namespace rpg;

void OPTION::Error(string msg)
{
	cerr << msg << '\n';
} // Error()

void OPTION::Pause(rpg::Player p)
{
	int choix;
	cout << "\n0 pour sauvegarder\n1 pour Charger\n2 pour quitter : ";

	cin >> choix;

	switch(choix)
	{
	  case 0:
	    OPTION::Save(p);
	    break;
	  case 1:
		OPTION::Load();
		break;
	  case 2:
		exit(2);
	  default:
		OPTION::Error("Ce choix n'existe pas.");
		break;
	}
}

void OPTION::Save(rpg::Player p)
{
	string fic = "characters.conf";
	ofstream os(fic.c_str(), ios::out | ios::trunc);

	if(os)
	{
		string Name = p.getName();
		int Sexe = p.getSexe(), Class = p.getClass(), Level = p.getLevel(), Str = p.getStr(),
		Dext = p.getDext(), Int = p.getInt(), Hp = p.getHp(), Mp = p.getMp(),
		Weapon = p.getWeapon(), Armor = p.getArmor(), Xp = p.getXp();

		os << Name << ' ' << Sexe << ' ' << Class << ' ' << Level << ' ' << Str << ' ' << Dext << ' '
			 << Int << ' ' << Hp << ' ' << Mp << ' ' << Weapon << ' ' << Armor << ' ' << Xp;

		os.close();
	}
	else
		OPTION::Error("Erreur à l'ouverture !") ;

} // Save()

rpg::Player OPTION::Load(void)
{
	string fic = "characters.conf";
	ifstream is(fic.c_str(), ios::in);
	rpg::Player * p = new Player();

	if(is)
	{
		string Name ;
		int Sexe, Class, Level, Str, Dext, Int, Hp, Mp, Weapon, Armor, Xp;

		is >> Name >> Sexe >> Class >> Level >> Str >> Dext >> Int >> Hp >> Mp >> Weapon >> Armor >> Xp;

		p = new Player(Name, Sexe, Class, Level, Str, Dext, Int, Hp, Mp, Weapon, Armor, Xp);

		is.close();

		return *p;
	}
	else
	{
		OPTION::Error("Erreur à l'ouverture !") ;
		return *p;
	}
} // Load()

rpg::Player OPTION::UpCaract(rpg::Player p)
{
	int caract = 3;
	int choix;

	cout << "Vous avez passé un niveau !!! niveau : " << p.getLevel();

	while(caract != 0)
	{

		cout <<  "\nVotre personage avant modifications, Force : " << p.getStr()
			 << " Intelligence : " << p.getInt() << " Dextérité : " << p.getDext()
			 << "\n Vie/Mana : " << p.getHp() << '/' << p.getMp()
			 << "\nVous avez "<< caract
			 << " points carac.\nQuelle caractéristique voulez-vous augmenter ?\n1 Force, 2 Intelligence ou 3 Dextérité : ";
		cin >> choix;

		if (choix == 1)
		{
			p.setStr(p.getStr()+1);
			caract--;
		}
		else if (choix == 2)
		{
			p.setInt(p.getInt()+1);
			caract--;
		}
		else if (choix == 3)
		{
			p.setDext(p.getDext()+1);
			caract--;
		}
		else
			cout << "Caractéristique non connue...";
	}



	cout << "\n\nVotre personage après modifications, Force : " << p.getStr()
		 << " Intelligence : " << p.getInt() << " Dextérité : " << p.getDext()
		 << "\n Vie/Mana : " << p.getHp() << '/' << p.getMp() << "\n L'aventure continue ! ! !\n\n";

	return p;
} // Caract()

#undef OPTION
